package com.subang.function.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.subang.common.annotation.Excel;
import com.subang.common.core.domain.BaseEntity;

/**
 * 学习打卡对象 sb_study_mark
 *
 * @author subei
 * @date 2025-03-27
 */
public class SbStudyMark extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 学习ID
     */
    private String studyMarkId;

    /**
     * 用户ID
     */
    @Excel(name = "用户ID")
    private Long userId;

    @Excel(name = "用户昵称")
    private String nickName;

    /**
     * 打卡日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "打卡日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date studyMarkDate;

    /**
     * 学习小组
     */
    @Excel(name = "学习小组")
    private String studyGroup;

    /**
     * 打卡内容
     */
    @Excel(name = "打卡内容")
    private String studyContent;

    @Excel(name = "本月未打卡次数")
    private Long unStudyMarkCounts;

    @Excel(name = "本月累计学习时长")
    private Long totalDuration;

    @Excel(name = "日均学习时长")
    private Long avgDailyDuration;

    @Excel(name = "本月累计刷题量")
    private Long totalQuestionCount;

    @Excel(name = "日均刷题量")
    private Long avgDailyQuestionCount;
    /**
     * 昨日完成度
     */
    @Excel(name = "昨日完成度")
    private BigDecimal yesterdayCompletionRate;

    /**
     * 昨日学习内容
     */
    @Excel(name = "昨日学习内容")
    private String yesterdayStudyContent;

    /**
     * 昨日学习时长（单位：分钟）
     */
    @Excel(name = "昨日学习时长", readConverterExp = "单=位：分钟")
    private Long yesterdayStudyDuration;

    /**
     * 昨日刷题量
     */
    @Excel(name = "昨日刷题量")
    private Long yesterdayQuestionCount;

    /**
     * 今日预计时长（单位：分钟）
     */
    @Excel(name = "今日预计时长", readConverterExp = "单=位：分钟")
    private Long todayExpectedDuration;

    /**
     * 今日预计刷题量
     */
    @Excel(name = "今日预计刷题量")
    private Long todayExpectedQuestionCount;

    public void setStudyMarkId(String studyMarkId) {
        this.studyMarkId = studyMarkId;
    }

    public String getStudyMarkId() {
        return studyMarkId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setStudyMarkDate(Date studyMarkDate) {
        this.studyMarkDate = studyMarkDate;
    }

    public Date getStudyMarkDate() {
        return studyMarkDate;
    }

    public void setStudyGroup(String studyGroup) {
        this.studyGroup = studyGroup;
    }

    public String getStudyGroup() {
        return studyGroup;
    }

    public void setStudyContent(String studyContent) {
        this.studyContent = studyContent;
    }

    public String getStudyContent() {
        return studyContent;
    }

    public void setYesterdayCompletionRate(BigDecimal yesterdayCompletionRate) {
        this.yesterdayCompletionRate = yesterdayCompletionRate;
    }

    public BigDecimal getYesterdayCompletionRate() {
        return yesterdayCompletionRate;
    }

    public void setYesterdayStudyContent(String yesterdayStudyContent) {
        this.yesterdayStudyContent = yesterdayStudyContent;
    }

    public String getYesterdayStudyContent() {
        return yesterdayStudyContent;
    }

    public void setYesterdayStudyDuration(Long yesterdayStudyDuration) {
        this.yesterdayStudyDuration = yesterdayStudyDuration;
    }

    public Long getYesterdayStudyDuration() {
        return yesterdayStudyDuration;
    }

    public void setYesterdayQuestionCount(Long yesterdayQuestionCount) {
        this.yesterdayQuestionCount = yesterdayQuestionCount;
    }

    public Long getYesterdayQuestionCount() {
        return yesterdayQuestionCount;
    }

    public void setTodayExpectedDuration(Long todayExpectedDuration) {
        this.todayExpectedDuration = todayExpectedDuration;
    }

    public Long getTodayExpectedDuration() {
        return todayExpectedDuration;
    }

    public void setTodayExpectedQuestionCount(Long todayExpectedQuestionCount) {
        this.todayExpectedQuestionCount = todayExpectedQuestionCount;
    }

    public Long getTodayExpectedQuestionCount() {
        return todayExpectedQuestionCount;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("studyMarkId", getStudyMarkId())
                .append("userId", getUserId())
                .append("nickName", getNickName())
                .append("studyMarkDate", getStudyMarkDate())
                .append("studyGroup", getStudyGroup())
                .append("studyContent", getStudyContent())
                .append("unStudyMarkCounts", getUnStudyMarkCounts())
                .append("totalDuration", getTotalDuration())
                .append("avgDailyDuration", getAvgDailyDuration())
                .append("avgDailyQuestionCount", getAvgDailyQuestionCount())
                .append("totalQuestionCount", getTotalQuestionCount())
                .append("yesterdayCompletionRate", getYesterdayCompletionRate())
                .append("yesterdayStudyContent", getYesterdayStudyContent())
                .append("yesterdayStudyDuration", getYesterdayStudyDuration())
                .append("yesterdayQuestionCount", getYesterdayQuestionCount())
                .append("todayExpectedDuration", getTodayExpectedDuration())
                .append("todayExpectedQuestionCount", getTodayExpectedQuestionCount())
                .toString();
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public Long getUnStudyMarkCounts() {
        return unStudyMarkCounts;
    }

    public void setUnStudyMarkCounts(Long unStudyMarkCounts) {
        this.unStudyMarkCounts = unStudyMarkCounts;
    }

    public Long getTotalDuration() {
        return totalDuration;
    }

    public void setTotalDuration(Long totalDuration) {
        this.totalDuration = totalDuration;
    }

    public Long getTotalQuestionCount() {
        return totalQuestionCount;
    }

    public void setTotalQuestionCount(Long totalQuestionCount) {
        this.totalQuestionCount = totalQuestionCount;
    }

    public Long getAvgDailyDuration() {
        return avgDailyDuration;
    }

    public void setAvgDailyDuration(Long avgDailyDuration) {
        this.avgDailyDuration = avgDailyDuration;
    }

    public Long getAvgDailyQuestionCount() {
        return avgDailyQuestionCount;
    }

    public void setAvgDailyQuestionCount(Long avgDailyQuestionCount) {
        this.avgDailyQuestionCount = avgDailyQuestionCount;
    }
}
